package service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

import dao.CheckNo;
import dao.JDBC_SQL;
import dao.JDBC_ConnClose;
import model.ProfessorVO;
import screen.LoginMain;
import screen.ProfessorMain;

public class ProfessorCreate {
	static ProfessorVO pv = new ProfessorVO();
	static JDBC_SQL sql = new JDBC_SQL();
	static Scanner sc = new Scanner(System.in);
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static boolean b = true;
	static String logId = LoginMain.logIdVO;
	
	public static void createProfessor() {
		while ( b ) {
			System.out.print("교수 번호를 입력해 주세요 : ");
			boolean a = false;
			pv.setProf_no( sc.next() );
			a = CheckNo.profNo(pv.getProf_no(), pv);
			if ( a ) { System.out.println("번호 생성 규칙에 어긋납니다. 다시 확인해주세요");
			} else  { 
				try {
					conn = JDBC_ConnClose.openDataBase();
					pstmt = conn.prepareStatement(sql.ProfessorSelectAll2SQL);
					pstmt.setString( 1, pv.getProf_no() );
					rs = pstmt.executeQuery();
					if ( rs.next() ) {
						System.out.println("이미 사용중인 교수 번호입니다. 다시 입력해주세요");
					} else { break; }
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
				}
			}
		}
		pv.setDept_no(pv.getProf_no().substring(0, 2));
		while ( b ) {
			System.out.print("교수 비밀번호를 입력해 주세요 : ");
			pv.setProf_pw( sc.next() );
			if ( pv.getProf_pw().equals(logId)) {
				System.out.println("아이디와 동일한 비밀번호는 사용하실 수 없습니다. 다시 입력해주세요");
			} else { break; }
		}
		System.out.print("교수의 이름을 입력해 주세요 : ");
		pv.setProf_name( sc.next() );
		System.out.print("교수의 연락처를 입력해 주세요 : ");
		pv.setProf_tel( sc.next() );
		sc = new Scanner(System.in);
		System.out.print("교수 주소를 입력해 주세요 : ");
		pv.setProf_addr( sc.nextLine() );
		System.out.print("교수 사무실 위치를 입력해 주세요 : ");
		pv.setProf_office( sc.nextLine() );
		
		System.out.println( pv.toString() );
		sc = new Scanner(System.in);
		while ( b ) {
			System.out.print("저장하시겠습니까 ? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = JDBC_ConnClose.openDataBase();
					pstmt = conn.prepareStatement(sql.ProfessorInsertSQL);
					pstmt.setString( 1, pv.getProf_no() );
					pstmt.setString( 2, pv.getProf_pw() );
					pstmt.setString( 3, pv.getProf_name() );
					pstmt.setString( 4, pv.getProf_tel() );
					pstmt.setString( 5, pv.getProf_addr() );
					pstmt.setString( 6, pv.getProf_office() );
					pstmt.executeUpdate();
					System.out.println("저장되었습니다.");
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("작업이 취소되었습니다.");
				System.out.println("교수 관련 업무 화면으로 이동합니다.");
				ProfessorMain.ProfessorAdminScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("교수 정보를 추가 등록 하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("교수 정보를 추가 등록 하겠습니다.");
				createProfessor();
				b = false; break;
			case "N" : case "n" :
				System.out.println("교수 관련 업무 화면으로 이동합니다.");
				ProfessorMain.ProfessorAdminScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}